/******************************************************************************
 * @File name   :      IRedemptionService.java
 *
 * @Author      :      JIZHANGS
 *
 * @Date        :      Jul 31, 2015
 *
 * @Copyright Notice: 
 * Copyright (c) 2015 Capgemini, Inc. All  Rights Reserved.
 * This software is published under the terms of the Capgemini Software
 * License version 1.0, a copy of which has been included with this
 * distribution in the LICENSE.txt file.
 * 
 * 
 * ----------------------------------------------------------------------------
 * Date                   Who         Version        Comments
 * Jul 31, 2015 1:06:59 PM        JIZHANGS     1.0            Initial Version
 *****************************************************************************/
package com.cap.bts.crmdp.dealer.redemption.service;

import java.util.List;

import com.cap.bts.crmdp.dealer.dealerinfosync.domain.DealerInfoRelMars;
import com.cap.bts.crmdp.dealer.redemption.domain.MemberPackageRedemption;
import com.cap.bts.crmdp.dealer.redemption.dto.MemberAndDealerInfoDto;
import com.cap.bts.crmdp.dealer.redemption.dto.MemberPackageInfoResultsDto;
import com.cap.bts.crmdp.dealer.redemption.dto.MemberPackagesReportDto;
import com.cap.bts.crmdp.dealer.redemption.dto.MemberQueryDto;
import com.cap.bts.crmdp.dealer.redemption.dto.RedemptionSubmitDto;
import com.cap.bts.framework.common.exception.AppException;
import com.cap.bts.framework.common.service.IBaseService;

/**
 *
 */
public interface IRedemptionService extends IBaseService {
    /**
     * @Date        :      2015-7-20
     * @param dto 
     * @return List<MemberPackageInfo> 
     */
    List<MemberPackageInfoResultsDto> getPackageListByMember(MemberQueryDto dto) throws AppException;
    
    /**
     * @Date        :      2015年9月17日
     * @param dto
     * @return
     * @throws AppException
     */
    List<MemberPackageInfoResultsDto> getAllPackageListByMember(MemberQueryDto dto) throws AppException;
    
    /**
     * @Date        :      2015年9月18日
     * @param dto
     * @return
     * @throws AppException
     */
    List<MemberPackagesReportDto> getPackageListForReportByMember(MemberQueryDto dto) throws AppException;
    
    /**
     * @Date        :      2015年10月23日
     * @param dto
     * @return
     * @throws AppException
     */
    List<MemberPackagesReportDto> getPackageListForReportForMarsByMember(MemberQueryDto dto, Long dealerId, String carPlate) throws AppException;
    
    /**
     * @Date        :      2015年9月17日
     * @param dto
     * @return
     * @throws AppException
     */
    List<MemberAndDealerInfoDto> getDealerInfoDto() throws AppException;
    
    /**
     * @Date        :      2015年10月22日
     * @param id
     * @return
     * @throws AppException
     */
    List<MemberAndDealerInfoDto> getMemberAndDealerInfoDtoByMemberId(Long id) throws AppException;
    /**
     * @Date        :      2015-7-20
     * @param dto 
     * @return Boolean
     */
    Boolean checkActivePackage(MemberQueryDto dto) throws AppException;
    
    /**
     * @Date        :      2015年9月17日
     * @param dto
     * @return
     * @throws AppException
     */
    Boolean checkPackage(MemberQueryDto dto) throws AppException;
    
    /**
     * sendRedemptionCode
     * @param redemptionId
     * @param memberPackageId 
     * @return
     * @throws AppException
     */
    boolean sendRedemptionCode(Long redemptionId, Long memberPackageId) throws AppException;
    
    /**
     * @Date        :      2015-7-20
     * @param dto 
     * @return Boolean
     */
    MemberPackageRedemption checkActivicationCode(RedemptionSubmitDto dto) throws AppException;
    
    /**
     * @Date        :      2015年9月9日
     * @param dto
     * @return
     * @throws AppException
     */
    MemberPackageRedemption useActivicationCode(RedemptionSubmitDto dto) throws AppException;
    
    /**
     * 根据dealerId获取MarsTenantId
     * @Date        :      2015年11月18日
     * @param dealerId
     * @return
     * @throws AppException
     */
    List<DealerInfoRelMars> getMarsTenantIdByDealerId(Long dealerId) throws AppException;
    
    List<Integer> getDealerIdByMarsTenantId(String marsTenantId) throws AppException;
  

}
